Traditional approaches to large-scale distributed computing projects utilize a client-server architecture. In this approach, multiple “client” computers establish connections to a single “server” computer, that acts as a centralized coordinator of communications and work assignments that are delegated to the client machines. The collection of clients so connected and managed by a server forms a compute cluster.